package com.platform.file.service;

import com.platform.file.domain.DicFileLog;
import org.springframework.web.multipart.MultipartFile;

import java.math.BigDecimal;
import java.util.List;

/**
 * 文件操作日志Service接口
 *
 * @author platform
 * @date 2023-05-08
 */
public interface IDicFileLogService {
    /**
     * 查询文件操作日志
     *
     * @param id 文件操作日志主键
     * @return 文件操作日志
     */
    DicFileLog selectDicFileLogById(Long id);

    /**
     * 查询文件操作日志列表
     *
     * @param dicFileLog 文件操作日志
     * @return 文件操作日志集合
     */
    List<DicFileLog> selectDicFileLogList(DicFileLog dicFileLog);

    /**
     * 新增文件操作日志
     *
     * @param dicFileLog 文件操作日志
     * @return 结果
     */
    int insertDicFileLog(DicFileLog dicFileLog);

    /**
     * 修改文件操作日志
     *
     * @param dicFileLog 文件操作日志
     * @return 结果
     */
    int updateDicFileLog(DicFileLog dicFileLog);

    /**
     * 批量删除文件操作日志
     *
     * @param ids 需要删除的文件操作日志主键集合
     * @return 结果
     */
    int deleteDicFileLogByIds(Long[] ids);

    /**
     * 删除文件操作日志信息
     *
     * @param id 文件操作日志主键
     * @return 结果
     */
    int deleteDicFileLogById(Long id);

    /**
     * 上传日志 保存
     */
    void saveUploadLog(String serviceCode, MultipartFile file, String url);

    /**
     * 上传日志(包含上传用户)
     *
     * @param serviceCode
     * @param userId
     * @param file
     * @param url
     */
    void saveUploadLogWithUserId(String serviceCode, Long userId, MultipartFile file, String url);

    int insertDicFileLogWithUserId(DicFileLog dicFileLog, Long userId);

    /**
     * 上传日志 保存
     */
    void saveUploadLog(String serviceCode, String filePath, double reSize);

    /**
     * 预览、下载日志保存
     *
     * @param filePath
     */
    void saveSelectLog(String filePath);

    /**
     * 保存删除日志
     *
     * @param filePath
     */
    void saveDeleteLog(String filePath);

    /**
     * 上传日志 保存
     */
    void saveUploadLogNew(String serviceCode, MultipartFile file, String url, String bucketName, String fileUrlSecret, String cataloguePrefix, String fileTag);

    /**
     * 上传日志 保存
     */
    void saveUploadLogNew(String serviceCode, String filePath, double reSize, String bucketName, String fileUrlSecret, String cataloguePrefix, String fileTag);

    /**
     * 通过fileKey查询文件
     *
     * @param fileKey 文件key
     * @return 文件信息
     */
    DicFileLog selectDicFileLogByFileKey(String fileKey);

    void saveShareFile(String serviceName, String fileName, String fPath, String bucketName, String contentType, BigDecimal size, String fileKey);
}
